"""
金叉：2，死叉：-2  向上：1  向下：-1
支持重复计算，但是要指定timekey，只能向前重复计算
"""
class cross3:
    def __init__(self,isreverse=False):
        self.timekey=None
        self.his=[]
        if isreverse:
            self.oncalc=self.oncalc_True
        else:
            self.oncalc = self.oncalc_False
    def oncalc_False(self,c,a,b,timekey=None):
        rst=0
        if c!=None and a!=None and b!=None:
            if timekey != None:
                if timekey==self.timekey:
                    self.his.pop()
            if self.his:
                if c>a:
                    if self.his[-1][0]<=self.his[-1][1]:
                        rst=2
                elif c<b:
                    if self.his[-1][0]>=self.his[-1][2]:
                        rst=-2
            self.timekey=timekey
            self.his.append((c,a,b))
            while len(self.his)>2:
                self.his.pop(0)
        return rst
    def oncalc_True(self,c,a,b,timekey=None):
        rst=0
        if c!=None and a!=None and b!=None:
            if timekey != None:
                if timekey==self.timekey:
                    self.his.pop()
            if self.his:
                if self.his[-1][0]>=self.his[-1][1]:
                    if c<a:
                        rst=-2
                elif self.his[-1][0]<=self.his[-1][2]:
                    if c>b:
                        rst=2
            self.timekey=timekey
            self.his.append((c,a,b))
            while len(self.his)>2:
                self.his.pop(0)
        return rst
